#include <iostream>
#include <cmath>
#include <algorithm>
#include <string>
#include <cstring>
#include <vector>
#include <map>
using namespace std;
typedef long long ll;


//map<int, int>cnt;
//int t, n, dp[5005];
//int main() {
//	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
//	cin >> t;
//	while (t--) {
//		cin >> n;
//		for (int i = 0; i <= n + 1; i++) {
//			dp[i] = 1e9;
//		}
//		cnt.clear();
//		for (int i = 1,tmp; i <= n; i++)
//		{
//			cin >> tmp;
//			cnt[tmp]++;
//		}
//		int mex = 0;
//		while (cnt[mex])mex++;
//		dp[mex] = 0;
//		for (int i = mex; i >= 1; i--)
//			for (int j = 0; j < i; j++)
//			{
//				dp[j] = min(dp[j], dp[i] + (cnt[j] - 1) * i + j);
//			}
//		cout << dp[0] << '\n';
//	}
//	return 0;
//}


//int t, maxn, in, m, tool[200];
//ll ans;
//int main() {
//	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
//	cin >> t;
//	while (t--) {
//		cin >> maxn >> in >> m;
//		ans = in;
//		for (int i = 1; i <= m; i++) {
//			cin >> tool[i];
//			if (tool[i] >= maxn)
//				ans += maxn - 1;
//			else
//				ans += tool[i];
//		}
//		cout << ans << '\n';
//	}
//	return 0;
//}

//int t, n, c[200005], k,ans, maxn[200005], maxnn[200005];;
//int main() {
//	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
//	cin >> t;
//	while (t--) {
//		cin >> n >> k;
//		vector<vector<int>>ok(k + 1);
//		for (int i = 1; i <= k; i++) {
//			ok[i].push_back(0);
//			maxn[i] = 0;
//			maxnn[i] = 0;
//		}
//		ans = 1e9;
//		for (int i = 1; i <= n; i++) {
//			cin >> c[i];
//			ok[c[i]].push_back(i);
//		}
//		for (int i = 1; i <= k; i++)
//		{
//			if (ok[i].size() == 1)continue;
//			ok[i].push_back(n + 1);
//			for (int j = 1; j < ok[i].size(); j++)
//			{
//				if (ok[i][j] - ok[i][j-1] - 1 > maxn[i]) {
//					maxnn[i] = maxn[i];
//					maxn[i] = ok[i][j] - ok[i][j-1] - 1;
//				}
//				else if (ok[i][j] - ok[i][j-1] - 1 > maxnn[i])
//					maxnn[i] = ok[i][j] - ok[i][j-1] - 1;
//			}
//		}
//		for (int i = 1; i <= k; i++)
//		{
//			if (ok[i].size() == 1)continue;
//			maxn[i] /= 2;
//			maxn[i] = max(maxn[i], maxnn[i]);
//			ans = min(ans, maxn[i]);
//
//		}
//		cout << ans << '\n';
//	}
//	return 0;
//}


//int main() {
//	int a[11] = { 0,1,2,2,2,5,6,7,8,9,10 };
//	cout << unique(a + 1, a + 1 + 9) - a;
//}

//int x = unique(a + 1, a + 1 + n) - a - 1;
//int ok = a[1] % 2;
//
//bool flag;
//for (int i = 2; i <= x; i++)
//{
//	flag = false;
//	for (int j = 1; j < i; j++)
//	{
//		if (a[i] % 2 == ok || (a[i] - a[j]) % 2 == ok)
//			flag = true;
//	}
//	if (!flag)break;
//}
//if (!flag)cout << "NO" << '\n';
//else cout << "YES" << '\n';

//int t, n, a[200005];
//int main() {
//	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
//	cin >> t;
//	while (t--) {
//		cin >> n;
//		for (int i = 1; i <= n; i++)
//			cin >> a[i];
//		sort(a + 1, a + 1 + n);
//		if (a[1] % 2 == 1) {
//			cout << "YES" << '\n';
//			continue;
//		}
//		if (a[1] % 2 == 0) {
//			bool flag = false;
//			for (int i = 2; i <= n; i++)
//			{
//				if (a[i] % 2 == 1) {
//					flag = true;
//					break;
//				}
//			}
//			if (flag) cout << "NO" << '\n';
//			else cout << "YES" << '\n';
//		}
//	}
//	return 0;
//}

int n, L;
double a[100001], b[100001], sum[100001];
int main() {
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	cin >> n >> L;
	for (int i = 1; i <= n; i++)
	{
		cin >> a[i];
	}
	double l = -1e9, r = 1e9;
	double eps = 1e-5,mid;
	while (r - l > eps) {
		mid = (r + l) / 2;
		for (int i = 1; i <= n; i++)b[i] = a[i] - mid;
		for (int i = 1; i <= n; i++)sum[i] = sum[i - 1] + b[i];
		double ans = -1e9,min_val=1e9;
		for (int i = L; i <= n; i++)
		{
			min_val = min(min_val, sum[i - L]);
			ans = max(ans, sum[i] - min_val);
		}
		if (ans >= 0)l = mid;
		else r = mid;
	}
	cout << int(r * 1000) << '\n';
	return 0;
}